[小ネタ] カスタマー管理ポリシーに設定するアクションがわからない。そんなときは
先日、AWS Transfer for SFTP
を管理するためのユーザー(それ以外は操作不可)を作成する機会があり、そのためのポリシー設定(アクション)ってどうするんだっけ?と一瞬戸惑いました。
そんな方向けの小ネタです。
※AWS Transfer for SFTP
に対する権限管理というよりは、適切なアクションを探すにはどうしたら良いか?という記事になります。
IAMを理解できている方はこれを見るだけでOK
そもそもIAMユーザー(やIAMグループ、IAMロール)の権限管理ってどうする??
IAMユーザー(やIAMグループ、IAMロール)にはポリシーをアタッチすることで権限を制御します。 ポリシーの種類は以下の3つです。
- AWS管理ポリシー
- カスタマー管理ポリシー
- インラインポリシー
AWS管理ポリシー
AWS管理ポリシーはAWSが用意している再利用可能なポリシーです。複数のIAMユーザー(やIAMグループ、IAMロール)間で共有可能です。 代表的なところでいうと
- AmazonS3FullAccess
- AmazonS3ReadOnlyAccess
などがあります。
タイプ:AWS による管理
となっているものがAWS管理ポリシーです。
カスタマー管理ポリシー
カスタマー管理ポリシーはユーザーが作成できる再利用可能なポリシーです。複数のIAMユーザー(やIAMグループ、IAMロール)間で共有可能です。AWS管理ポリシーに最適なものがない場合はカスタマー管理ポリシーを作成することになります。
例えば、特定のS3バケットに対してのみ権限を与えたい場合はカスタマー管理ポリシーを作成します。
インラインポリシー
インラインポリシーはIAMユーザー(やIAMグループ、IAMロール)と1 対 1 の関係で作成するポリシーです。複数のIAMユーザー(やIAMグループ、IAMロール)間で共有することはできません。
多くの場合は、AWS管理ポリシー、カスタマー管理ポリシーを利用しIAMユーザー(やIAMグループ、IAMロール)の権限を制御します。
カスタマー管理ポリシーに設定するアクションがわからない
例えば、AmazonS3ReadOnlyAccessのActionは以下のようになっています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "*" } ] }
ここのAction、AWS Transfer for SFTP
のみ操作可としたい場合はどう設定すれば良いでしょうか??
答えは、ここにありました。
各サービス毎のActionが定義されています。
AWS Transfer for SFTP
に対するActionも定義されており、サービスのprefix
はtransfer
であり、CreateServer
やCreateUser
などのActionがあることが理解できます。
AWS Transfer for SFTP (service prefix: transfer) provides the following service-specific resources, actions, and condition context keys for use in IAM permission policies.
なので、AWS Transfer for SFTP
のみ操作可としたい場合は
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "transfer:*" ], "Resource": "*" } ] }
のポリシーを作成し対象のユーザーにアタッチすればOKです。
今回は作成済みのAWS Transfer for SFTP
に対する全てのアクションを可能にするためIAMPassRoleAccessと、AmazonS3FullAccessのポリシーも合わせて対象のユーザーにアタッチしました。
さいごに
カスタマー管理ポリシーのアクションに関する小ネタでした。誰かのお役に立てば幸いです。